package com.mjf.scala.chapter06

/**
 * 特质（抽象类+接口）的声明以及混入特质
 */
object Scala17_TestTrait {
  def main(args: Array[String]): Unit = {

    val c1: MyClass17 = new MyClass17()
//    val c1: PersonTrait17 = new MyClass17()   // 多态
    println(c1.name, c1.age)
    c1.eat()
    c1.sleep()

  }
}

// 特质的声明
trait PersonTrait17 {

  // 抽象属性
  var name: String

  // 抽象方法
  def eat(): Unit

  // 非抽象属性
  var age : Int = 10

  // 非抽象方法
  def sleep(): Unit = {
    println("Person's sleep")
  }

}

// 混入特质
class MyClass17 extends PersonTrait17 {
  override var name: String = "lucy"

  override def eat(): Unit = println("mc eat")
}